package com.pizzaria.bean;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;

import com.pizzaria.bean.Cliente;

import java.util.Date;


@Entity
@Table(name="pedido", schema="pizzaria")
@SequenceGenerator(name = "pedido_sequence", sequenceName = "pedido_sequence")
public class Pedido {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY,generator="pedido_sequence")
	@Column(name="id", nullable=false, updatable=false)
	private long id;

	@JoinColumn(name="cliente", nullable=false)
	@OneToOne(fetch=FetchType.EAGER)
	@OnDelete(action=OnDeleteAction.CASCADE)
	private Cliente cliente;

	@Column(name="data", nullable=true)
	private Date data;

	@Column(name="total", nullable=true)
	private float total;

	@Column(name="fechado", nullable=true)
	private boolean fechado;

	@Column(name="endereco", nullable=false)
	private String endereco;

	@Column(name="vl_pago", nullable=false, columnDefinition="numeric(10,2) default 0")
	private float vlPago;
	
	@Column(name="vl_entrega", nullable=false, columnDefinition="numeric(10,2) default 0")
	private float vlEntrega;

	@Column(name="observacao", nullable=false)
	private String observacao;
	
	@Column(name="entregue", nullable=false, columnDefinition="boolean default false")
	private boolean entregue;


	public Pedido() { }

	public Pedido(long id,Cliente cliente,Date data,float total,boolean fechado,String endereco,float vlPago,float vlEntrega,String observacao, boolean entregue) {
		this.id = id;
		this.cliente = cliente;
		this.data = data;
		this.total = total;
		this.fechado = fechado;
		this.endereco = endereco;
		this.vlPago = vlPago;
		this.observacao = observacao;
		this.entregue = entregue;
		this.vlEntrega = vlEntrega;
	}

	public long getId(){
		return this.id;
	}

	public void setId(long id){
		this.id = id;
	}

	public Cliente getCliente(){
		return this.cliente;
	}

	public void setCliente(Cliente cliente){
		this.cliente = cliente;
	}

	public Date getData(){
		return this.data;
	}

	public void setData(Date data){
		this.data = data;
	}

	public float getTotal(){
		return this.total;
	}

	public void setTotal(float total){
		this.total = total;
	}

	public boolean getFechado(){
		return this.fechado;
	}

	public void setFechado(boolean fechado){
		this.fechado = fechado;
	}

	public String getEndereco(){
		return this.endereco;
	}

	public void setEndereco(String endereco){
		this.endereco = endereco;
	}

	public float getVlPago(){
		return this.vlPago;
	}

	public void setVlPago(float vlPago){
		this.vlPago = vlPago;
	}

	public String getObservacao(){
		return this.observacao;
	}

	public void setObservacao(String observacao){
		this.observacao = observacao;
	}

	public boolean isEntregue() {
		return entregue;
	}

	public void setEntregue(boolean entregue) {
		this.entregue = entregue;
	}

	public float getVlEntrega() {
		return vlEntrega;
	}

	public void setVlEntrega(float vlEntrega) {
		this.vlEntrega = vlEntrega;
	}

}